# Importo modulo necesario para obterer la fecha actual
from datetime import datetime

# Importo variable global necesaria
from globalVar import GLOBAL_VAR


# Input:
# file_name: Nombre del archivo a crear. Si se deja vacio entonces se usa
#           la fecha actual como nombre del archivo
# options:  Opciones de continuacion ('c') y agregado de fecha a un 
#           nombre de archivo ('t'). Estos caracteres deben estar unidos
#           con el caracter '+'. 
#           Ejemplo: options = 'c' (Continua archivo ya creado)
#                   options = 't' (Agrega fecha al nombre del archivo)
#                   options = 'c+t' (Hace ambas cosas previamente dichas)
class Log():
    
    def __init__(self,file_name=None,options=None):
        # Variable para guardar las opciones habilitadas
        opt= []
        
        # Si se pasaron opciones
        if options != None:
            # Recupero las opciones y las guardo en opt
            opt = options.split('+')
        
        # Si no se pasaron opciones
        if file_name == None:
            
            # Obtengo el dia actual
            hoy = datetime.now()
            
            # Genero nombre de archivo uniendo datos del dia con '_' y '.log'
            self.name = "_".join([str(hoy.year), str(hoy.month), str(hoy.day),\
                        str(hoy.hour), str(hoy.minute), str(hoy.second)])+".log"
        
        # Recibi un nombre de archivo particular        
        else:
            # Debo agregarle datos del dia?
            if 't' in opt: 
                
                # Obtengo el dia actual
                hoy = datetime.now()
                
                # Genero nombre de archivo uniendo datos del dia con '_' y '.log'
                self.name = file_name+"_".join([str(hoy.year), str(hoy.month), str(hoy.day),\
                        str(hoy.hour), str(hoy.minute), str(hoy.second)])+".log"

            else:
                
                # No debo agregarle datos al nombre de archivo
                self.name = file_name
        
        # Si voy a usar un archivo ya creado
        if 'c' in opt:
            
            # Abro archivo con opcion 'append'
            self.file = open(self.name, 'a')
        
        # Si uso archivo nuevo
        else:
            
            # Abro archivo con opcion 'write'
            self.file = open(self.name, 'w')

        # Cierro el archivo
        #self.file.close()
        
        
    # Desc: Agrega una nueva linea al archivo ya creado
    # Ret: Nada
    def update (self, new_line):
        
        # Me aseguro de tener los datos separados por linea
        if not new_line.endswith('\n'):
            # Agrego salto de linea pues no lo tenia
            new_line = new_line + '\n'
        
        # Abro archivo de log para hacer append
        #self.file = open(self.name, 'a')
        
        # Escribo nueva linea
        self.file.write(new_line)
          
